Content distribution systems have been developed to enable data such as media content, software updates and critical patches to be distributed to nodes in a network. Typically these systems comprise many servers which are placed in the network, with nodes connecting directly to one of the servers to download the required file. However, such systems are constrained by the connection bandwidth to the servers and require considerable investment to increase the capacity of the system. Consequently, alternative distribution systems have been developed which rely on a fully distributed architecture, with nodes in the network participating in the distribution process. Such systems may be referred to as peer-to-peer networks, which provide an infrastructure that enables computing devices to communicate and share information securely with one another. A peer-to-peer networking infrastructure can be effectively employed to improve the efficiency and scalability of content distribution.
In peer-to-peer networks, each computer platform, or node, can operate as a hub, i.e., each node has both client functionality and server functionality. Each node has a list of addresses, most commonly Internet Protocol (IP) addresses, of several other nodes, or “peer nodes”. These nodes can directly communicate with each other without a central or intermediate server.
Peer-to-peer networks continue to increase in popularity due to many desirable features, such as adaptation, self-organization, load-balancing, fault-tolerance, low cost, high availability, scalability, and ability to provide a large pool of resources. For example, peer-to-peer networks have emerged as a popular way to share large amounts of data, such as by peers downloading digital content that is referenced as being available for download from another peer in the peer-to-peer network.